package cn.iocoder.yudao.module.shop.service.handlestrategyuser;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.shop.controller.admin.handlestrategyuser.vo.*;
import cn.iocoder.yudao.module.shop.dal.dataobject.handlestrategyuser.ShopHandleStrategyUserDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 艾灸师绑定的工资策略 Service 接口
 *
 * @author 曹建伟
 */
public interface ShopHandleStrategyUserService {

    /**
     * 创建艾灸师绑定的工资策略
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createHandleStrategyUser(@Valid ShopHandleStrategyUserCreateReqVO createReqVO);

    /**
     * 更新艾灸师绑定的工资策略
     *
     * @param updateReqVO 更新信息
     */
    void updateHandleStrategyUser(@Valid ShopHandleStrategyUserUpdateReqVO updateReqVO);

    /**
     * 删除艾灸师绑定的工资策略
     *
     * @param id 编号
     */
    void deleteHandleStrategyUser(Long id);

    /**
     * 获得艾灸师绑定的工资策略
     *
     * @param id 编号
     * @return 艾灸师绑定的工资策略
     */
    ShopHandleStrategyUserDO getHandleStrategyUser(Long id);

    /**
     * 获得艾灸师绑定的工资策略列表
     *
     * @param ids 编号
     * @return 艾灸师绑定的工资策略列表
     */
    List<ShopHandleStrategyUserDO> getHandleStrategyUserList(Collection<Long> ids);

    /**
     * 获得艾灸师绑定的工资策略分页
     *
     * @param pageReqVO 分页查询
     * @return 艾灸师绑定的工资策略分页
     */
    PageResult<ShopHandleStrategyUserDO> getHandleStrategyUserPage(ShopHandleStrategyUserPageReqVO pageReqVO);

    /**
     * 获得艾灸师绑定的工资策略列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 艾灸师绑定的工资策略列表
     */
    List<ShopHandleStrategyUserDO> getHandleStrategyUserList(ShopHandleStrategyUserExportReqVO exportReqVO);

    ShopHandleStrategyUserDO getHandleStrategeByUserId(Long userId);

    List<ShopHandleStrategyUserRespVO> getHandleStrategeByUserIds(Collection<Long> userIds);
}
